`timescale 1ns / 100ps

module freq_div_in_clk_tb ();

parameter SYSCLK_PERIOD = 20; // 系统时钟周期为20ns，即50MHz

reg SYSCLK; // 模拟时钟信号
reg SYSRESET_N; // 模拟复位信号，低电平有效

// 初始化时钟信号和复位信号
initial begin
    SYSCLK = 1'b0;
    SYSRESET_N = 1'b0;
end

// 导出仿真数据，用于显示波形图
initial begin
    $dumpfile("output/freq_div_in_clk_tb.vcd");
    $dumpvars(0, freq_div_in_clk_tb);
end

initial begin
    #(SYSCLK_PERIOD * 2.0) SYSRESET_N = 1'b1; // 延时2个时钟周期后复位信号失效
    #2000 $stop; // 1000个时间单位(1000ns)后仿真结束
end

always @ (*) begin
    #(SYSCLK_PERIOD / 2.0) SYSCLK <= ~SYSCLK; // 每半个时钟周期，时钟信号切换
end

freq_div_in_clk us_pulse_inst
(
    .rst_n(SYSRESET_N),
    .clk_50m(SYSCLK),
    .out_p(out_p)
);

endmodule  //freq_div_in_clk_tb